package 接口;

public class 实例对象 {
	/*
	 * 4.使用接口与实现类 ：实例化对象
	 * 
	创建：
	接口名 xxx = new 实现类名(   ) ;
	
	调用：
	xxx.抽象方法名（参数）；
		1.对象 只能调用 接口里的抽象方法      ，不能 调用实现类里的 特有方法
		2.调用抽象方法时，真正执行 的是实现类里的具体方法
		3.能调用哪些方法看左边，具体执行效果看右边
	 *
	 * 5.面向接口编程
	 * 	不在乎传入的对象是狗是猫，只关心传进来的是不是Animal  ，接口
	 * 
	*/
	
	public static void main(String[] args) {
		
		// 实例化对象
		Animal cat = new Cat();
		
		// 调用抽象方法
		cat.eat();
		cat.sleep();
		
		// 调用 实现类 特有方法
		//cat.catchMouse(); //错误！无法调用右侧实现类的特有方法，只能调用接口里的方法。
	}
	
	public static void show(Animal animal) { //不在乎传入的对象是狗是猫，只关心传进来的是不是Animal  ，接口
		animal.eat();
		animal.sleep();
	}

}
